package chapter_03_factory.p1_simpleFactory;

/**
 * Created by CharloYao on 2017/3/17.
 * 简单工厂；工厂类中选择产品的实现类，并返回；不关心产品如何创建，组装，实现(这些都由具体的产品类来显示)
 * 简单工厂的目的在于为客户端来选择相应的实现，从而使得客户端与实现之间解耦，这样具体实现发生变化后，就不用修改客户端了，
 * 这个变化会被简单工厂吸收和屏蔽掉了
 */
public class ProductFactory {
    
    public static IProduct getProduct(int type){
        IProduct product = null;
        if(type==1){
            //如果创建产品A很复杂，不能直接new，则需要有其他类来实现好，供工厂方法调用，工厂方法里面一般不能负责创建(new)复杂产品
            product = new ProductA();
        }else{
            product = new ProductB();
        }
        return product;
    }

    //这个工厂类中，也可以创建其他的产品，供客户端调用；一个工厂类可以创建多个不同的不相关的产品；
    public static Object getProductOther(Object type){

        return null;
    }
}
